package ast;

public abstract class AbstractTipo implements Tipo {

	public boolean isPrimitivo() {
		return false;
	}

	public Tipo inferirAritmetica(Tipo tipo) {
		return null;
	}

	// Puede que haga falta comparar reales tambien
	public Tipo inferirComparacion(Tipo tipo) {
		if (this instanceof TipoInt || this instanceof TipoChar)
			if (tipo instanceof TipoInt || tipo instanceof TipoChar)
				return new TipoInt();
		if (this instanceof TipoReal)
			if(tipo instanceof TipoReal || tipo instanceof TipoInt)
				return new TipoInt();
		return null;
	}
	@Override
	public boolean equals(Object tipo){
		if(this.getClass().getSimpleName().equals(tipo.getClass().getSimpleName()))
			return true;
		else
			return false;
	}
	@Override
	public int numeroBytes() {
		return 0;
	}

	@Override
	public String getSufijo() {
		return "";
	}
}
